﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BLL
{
    public class ThuaDatBLL
    {
        LandEntities data = new LandEntities();
        public ThuaDatBLL()
        { }

        // lấy danh sách danh mục phân loại thửa
        public List<PHANLOAITHUA> DanhSachPhanLoaiThua()
        {
            var phanloaithua = from plt in data.PHANLOAITHUAs
                               select plt;
            return phanloaithua.ToList<PHANLOAITHUA>();
        }
        
        // Lấy một thửa đất dựa trên mã thửa đất
        public TIMTHUADAT_Result TimKiemMaThuaDat(string maTD)
        {
            var thuadat = data.TIMTHUADAT(maTD).FirstOrDefault();
            return thuadat;
        }

        // Lưu thửa đất xuống CSDL
        public void ThemThuaDat(string maTD, string maDG, string maPLThua, string maToBanDo, string maLD, 
            string maTGHinhThanh, string maTGKetThuc,string diaChi,string nhaO,string congTrinhKhac,string thoiHan,
            string rungSanXuat,string cayLauNam, string ghiChu)
        {
            THUADAT td = new THUADAT();
            td.MATHUADAT = maTD;
            td.MADAGIAC = maDG;
            td.MAPLTHUA = maPLThua;
            td.MATOBANDO = maToBanDo;
            td.DIACHI = diaChi;
            td.NHAO = nhaO;
            td.CONGTRINHKHAC = congTrinhKhac;
            td.THOIHAN = Int32.Parse(thoiHan);
            td.RUNGSANXUAT = rungSanXuat;
            td.CAYLAUNAM = cayLauNam;
            td.GHICHU = ghiChu;

            LD_TD_TG ltt = new LD_TD_TG();
            ltt.MALOAIDAT = maLD;
            ltt.MATHUADAT = maTD;
            ltt.MATGHINHTHANH = maTGHinhThanh;
            ltt.MATGKETTHUC = maTGKetThuc;

            td.LD_TD_TG.Add(ltt);
            data.THUADATs.AddObject(td);
            data.SaveChanges();
        }
       
        // Lưu đối tượng thời gian cho việc thống kê
        public void ThemThoiGian(string maThoiGian, DateTime ngay)
        {
            THOIGIAN tg = new THOIGIAN();
            tg.MATHOIGIAN = maThoiGian;
            tg.DDMMYYYY = ngay;
            data.THOIGIANs.AddObject(tg);
            data.SaveChanges();
        }

        public bool KiemTraThoiGian(DateTime tg)
        {
            THOIGIAN thoigian = data.THOIGIANs.SingleOrDefault(t => t.DDMMYYYY == tg);
            if(thoigian!=null)
                return true;
            else
                return false;
        }

        //Lấy danh sách danh mục tờ bản đồ
        public List<TOBANDO> DanhSachToBanDo()

        {
            var tobando = from tbd in data.TOBANDOes
                          select tbd;
            return tobando.ToList<TOBANDO>();
        }

        // lấy danh sách danh mục thời gian
        public List<THOIGIAN> DanhSachThoiGian()
        {
            var thoigian = from tg in data.THOIGIANs
                           select tg;
            return thoigian.ToList<THOIGIAN>();
        }

        //Tìm kiếm mã thửa đất, chủ sử dụng theo so CMND
        public List<TIMTHUADATTHEOCHUSUDUNG_Result> TimThuaDatTheoChuSuDung(string tenCSD, string cMND)
        {
            var thuadat = from td in data.TIMTHUADATTHEOCHUSUDUNG(tenCSD, cMND)
                          select td;
            return thuadat.ToList<TIMTHUADATTHEOCHUSUDUNG_Result>();
        }

        //public void ThemThuaDatVoGiayChungNhan(string maGiayChungNhan, string maThuaDat)
        //{
        //    Thua
        //    THUADAT_GCN td_gcn = new THUADAT_GCN();
        //    td_gcn.MATHUADAT = maThuaDat;
        //    td_gcn.MAGCN = maGiayChungNhan;

        //    data.THUADAT_GCN.AddObject(td_gcn);
        //    data.SaveChanges();
        //}

        //public void ThemLoaiDat_ThuaDat_ThoiGian(string maLD, string maTD, string maTGHinhThanh,string maTGKetThuc)
        //{
        //    LD_TD_TG ltt = new LD_TD_TG();
        //    ltt.MALOAIDAT = maLD;
        //    ltt.MATHUADAT = maTD;
        //    ltt.MATGHINHTHANH = maTGHinhThanh;
        //    ltt.MATGKETTHUC = maTGKetThuc;
        //    data.LD_TD_TG.AddObject(ltt);
        //    data.SaveChanges();
        //}

        //public THUADAT TimKiemMaThuaDat(string maTD)
        //{
        //    var thuadat = (from td in data.THUADATs
        //                   where td.MATHUADAT == "21635.1.1"
        //                   select td).FirstOrDefault();
        //    return thuadat;
        //}

        //cập nhật lại các thửa hết hạn sau khi gộp, tách thửa
        public void CapNhatThuaCuHetHan(string maTD, string ngayHetHan)
        {            
            LD_TD_TG ltt = data.LD_TD_TG.SingleOrDefault(l => l.MATHUADAT.Trim() == maTD);
            ltt.MATGKETTHUC = ngayHetHan;         
            data.SaveChanges();
        }


        // cập nhật lại giá trị cho thửa đất cha con sau khi gộp, tách thửa
        public void CapNhatThuaDatChaConGopThua(string[] maTDCha, string maTDCon)
        {
            for (int i = 0; i < maTDCha.Count(); i++)
            {
                data.INSERT_THUADAT_CHACON(maTDCha[i], maTDCon);
            }
        }

        // Lấy một thửa đất theo mã
        public THUADAT LayThuaDatTheoMa(string maTD)
        {
            THUADAT td = data.THUADATs.SingleOrDefault(t => t.MATHUADAT.Trim() == maTD);
            return td;
        }

    }
}
